﻿using System;
using Managistics.Model;
using System.Collections.Generic;
using Managistics.Warehouse.Factories;
using Managistics.Model.ValueObject;
using Managistics.Warehouse.Views.Base;
using Managistics.Core.Services;

namespace Managistics.Warehouse.Views.Interfaces
{
    public interface IViewEnterFromPurchaseView : IView
    {
        ///
        /// =======================================================================================
        /// View call actions to Controller
        /// =======================================================================================
        ///
        # region View call actions to Controller

        /// <summary>
        /// Load list of PurchaseOrders
        /// </summary>
        /// <param type="PurchaseOrder" name="purchaseOrder"></param>
        event Action<PurchaseOrderParam> LoadPurchaseOrders;

        /// <summary>
        /// Load list of PurchaseOrderDetails
        /// </summary>
        /// <param type="PurchaseOrder" name="purchaseOrder"></param>
        event Action<string> LoadPurchaseOrderDetails;

        /// <summary>
        /// Load list of InputSheets
        /// </summary>
        /// <param type="PurchaseOrder" name="purchaseOrder"></param>
        event Action<string> LoadInputSheets;

        /// <summary>
        /// Load list of InputSheetDetails
        /// </summary>
        /// <param type="PurchaseOrder" name="purchaseOrder"></param>
        /// <param type="InputSheet" name="inputSheet"></param>
        event Action<string, string> LoadInputSheetDetails;

        /// <summary>
        /// Save InputSheet
        /// </summary>
        /// <param type="InputSheetParam" name="param"></param>
        event Action<InputSheetParam> SaveInputSheet;

        /// <summary>
        /// Delete an inputSheet
        /// </summary>
        event Action<string> DeleteInputSheet;

        # endregion View call actions to Controller

        ///
        /// =======================================================================================
        /// Controller setback actions to View
        /// =======================================================================================
        ///
        # region Controller setback actions to View
        /// <summary>
        /// Set PurchaseOrder data
        /// </summary>
        /// <param type="List<PurchaseOrder>" name="list"></param>
        void SetPurchaseOrderRecord(List<PurchaseOrder> list);

        /// <summary>
        /// Set PurchaseOrderDetail data
        /// </summary>
        /// <param type="List<PurchaseOrderDetail>" name="list"></param>
        void SetPurchaseOrderDetailRecord(List<PurchaseOrderDetail> list);

        /// <summary>
        /// Set InputSheet data
        /// </summary>
        /// <param type="List<InputSheetRecord>" name="list"></param>
        void SetInputSheetRecord(List<InputSheet> list);

        /// <summary>
        /// Set InputSheetDetail data
        /// </summary>
        /// <param type="List<InputSheetDetailRecord>" name="list"></param>
        void SetInputSheetDetailRecord(List<InputSheetDetailRecord> list);

        # endregion Controller setback actions to View
    }
}